package cn.edu.gzgs.service;

import cn.edu.gzgs.dto.DeptDTO;
import cn.edu.gzgs.dto.DeptPageQueryDTO;
import cn.edu.gzgs.entity.User;
import cn.edu.gzgs.vo.DeptUserVO;
import cn.edu.gzgs.vo.DeptVO;
import cn.edu.gzgs.common.PageResult;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.edu.gzgs.entity.Dept;

import java.util.List;

/**
 * 部门管理服务接口
 *
 * @author Zyf
 */
public interface DeptService extends IService<Dept> {

    /**
     * 新增部门
     * @param deptDTO 部门信息
     */
    void saveDept(DeptDTO deptDTO);

    /**
     * 根据ID删除部门
     * @param id 部门ID
     */
    void deleteById(Long id);

    /**
     * 修改部门
     * @param deptDTO 部门信息
     */
    void updateDept(DeptDTO deptDTO);

    /**
     * 分页查询部门
     * @param deptPageQueryDTO 查询条件
     * @return 分页结果
     */
    PageResult<DeptVO> pageQuery(DeptPageQueryDTO deptPageQueryDTO);

    /**
     * 根据部门ID查询其下的所有用户
     * @param deptId 部门ID
     * @return 用户列表
     */
    List<User> getUsersByDeptId(Long deptId);

    /**
     * 根据部门ID查询其下的所有用户（返回精简视图）
     *
     * @param deptId 部门ID
     * @return 用户精简视图列表
     */
    List<DeptUserVO> getDeptUsersByDeptId(Long deptId);

    /**
     * 获取所有部门列表
     * @return 部门列表
     */
    List<DeptVO> listAll();
} 